#ifndef _MATRIX_H
#define _MATRIX_H
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

#define DT 0.1               // 时间间隔
#define PI 3.141592653589793 // 圆周率
#define MIN_LAMBDA 1e-10     // 最小似然值
#define REG_EPS 1e-6         // 正则化参数

// 矩阵结构体
typedef struct
{
    int rows;
    int cols;
    double **data;
} Matrix;

// 矩阵操作函数声明
Matrix *create_matrix(int rows, int cols);
void free_matrix(Matrix *mat);
void print_matrix(Matrix *mat);
Matrix *matrix_multiply(Matrix *a, Matrix *b);
Matrix *matrix_transpose(Matrix *mat);
Matrix *matrix_add(Matrix *a, Matrix *b);
Matrix *matrix_subtract(Matrix *a, Matrix *b);
Matrix *matrix_scalar_multiply(Matrix *mat, double scalar);
Matrix *matrix_eye(int n);
int matrix_inverse(Matrix *mat, Matrix *inv);
double matrix_det(Matrix *mat);
Matrix *matrix_copy(Matrix *mat);

#endif